package com.stylefeng.guns.api.film;

import com.stylefeng.guns.api.film.vo.*;

import java.util.List;

/**
 * @Author: jiaru
 * @Description:
 * @Date: Created on 2019/3/23
 * @Modify:
 */
public interface FilmServiceApi {

    /**
     * 获取banners
     * @return
     */
    List<BannerVo> getBanners();

    /**
     * 获取热映影片
     * @param max       最大数量
     * @param nums
     * @param nowPage
     * @param sortId
     * @param sourceId
     * @param yearId
     * @param catId
     * @return
     */
    FilmVo getHotFilms(boolean max, int nums, int nowPage, int sortId, int sourceId, int yearId, int catId);

    /** 开发中，如果业务发生改变，需要拓展，最好不要修改原有接口，否则可能影响其它业务的。
     *  可以增加重载方法，这样可以满足新业务，也能兼容现有业务。
     **/
    // FilmVo getHotFilms(boolean max, int nums);

    /**
     * 获取即将上映影片[受欢迎程度做排序]
     * @param max       最大数量
     * @param nums
     * @param nowPage
     * @param sortId
     * @param sourceId
     * @param yearId
     * @param catId
     * @return
     */
    FilmVo getSoonFilms(boolean max, int nums, int nowPage, int sortId, int sourceId, int yearId, int catId);

    /**
     * 获取经典影片
     * @param nums
     * @param nowPage
     * @param sortId
     * @param sourceId
     * @param yearId
     * @param catId
     * @return
     */
    FilmVo getClassicFilms(int nums, int nowPage, int sortId, int sourceId, int yearId, int catId);
    /*
        在正式项目中，推荐大家使用的做法
     */
//    // 获取热映影片
//    FilmVo getHotFilms(int nowPage,int nums ...);

    /**
     * 获取票房排行榜
     * @return
     */
    List<FilmInfo> getBoxRanking();

    /**
     * 获取人气排行榜
     * @return
     */
    List<FilmInfo> getExpectRanking();

    /**
     * 获取Top100
     * @return
     */
    List<FilmInfo> getTop();

    /**************** 获取影片条件接口 ******************/
    /**
     * 分类条件
     * @return
     */
    List<CatVo> getCats();
    /**
     * 片源条件
     * @return
     */
    List<SourceVo> getSources();
    /**
     * 获取年代条件
     * @return
     */
    List<YearVo> getYears();

    /**
     * 根据影片ID或者名称获取影片信息
     * @param searchType
     * @param searchParam
     * @return
     */
    FilmDetailVo getFilmDetail(int searchType,String searchParam);


}
